import { i18n } from "@/plugins/vueI18n";
import { useLocaleStoreWithOut } from "@/store/modules/locale";
import { setHtmlPageLang } from "@/plugins/vueI18n/helper";

const setI18nLanguage = (locale: LocaleType) => {
    const localeStore = useLocaleStoreWithOut();

    if (i18n.mode === "legacy") {
        i18n.global.locale = locale;
    } else {
        ;(i18n.global.locale as any).value = locale;
    }
    localeStore.setCurrentLocale({
        lang: locale
    });
    setHtmlPageLang(locale);
};

export const useLocale = () => {
    // Switching the language will change the locale of useI18n
    // And submit to configuration modification
    const changeLocale = async (locale: LocaleType) => {
        const globalI18n = i18n.global;

        const langModule = await import(`../../locales/${locale}.ts`);

        globalI18n.setLocaleMessage(locale, langModule.default);

        setI18nLanguage(locale);
    };

    return {
        changeLocale
    };
};
